package org.itstack.demo.design;

/**
 * @Author: gs
 * @Date: 2024/9/4 21:42
 * @Version: v1.0.0
 * @Description: TODO 使用类的内部类(线程安全)
 * 懒加载：懒加载是一种常见的优化技术，它可以延迟对象的创建或初始化，直到对象第一次被使用时才进行。
 *      这种技术可以帮助我们减少资源的浪费，提高程序的运行效率。
 * JVM虚拟机可以保证多线程并发访问的正确性，也就是一个类的构造方法在多线程环境下可以被正确的加载。
 **/
public class Singleton_04 {

    private static class SingletonInner{
        // 在静态内部类中初始化Singleton_04的一个实例
        // 由于静态内部类在外部类被加载时不会被加载，它只会在第一次被引用时加载，因此实现了延迟加载
        // 并且由于JVM保证了类加载的线程安全性，这里不需要额外的同步措施
        private static Singleton_04 instance = new Singleton_04();
    }

    private Singleton_04(){

    }
    // 这个方法只会在第一次被调用时初始化instance变量
    public static Singleton_04 getInstance(){
        return SingletonInner.instance;
    }
}
